Vorsicht bei “FOR ALL ENTRIES”
ACHTUNG: Bei folgender Konstellation liefert der Befehl FOR ALL ENTRIES evtl. nicht das gewünschte Ergebnis, denn doppelte Ergebnismengen werden eliminiert!!
ACHTUNG: Bei folgender Konstellation liefert der Befehl FOR ALL ENTRIES evtl. nicht das gewünschte Ergebnis, denn doppelte Ergebnismengen werden eliminiert!!
Nehmen wir folgende zwei BSIS-Einträge:
BUKRS HKONT AUGDT ZUONR GJAHR BELNR BUZEI SHKZG DMBTR
0001 920002 00.00.0000 55661999 1999 005566 002 H 450,00
0001 920002 00.00.0000 55661999 1999 005566 004 H 450,00
Die Einträge unterscheiden sich nur in der Buchungszeile. Im unten stehenden Programm werden diese beiden auch selektiert, da HKONT-BELNR-BUZEI eindeutig sind. Wenn wir aber BUZEI aus der Selektion herausnehmen, dann erhalten wir nur noch einen Eintrag in die Tabelle und nicht beide Zeilen, auf die die Bedingung zutrifft.
Man sollte sich dieses Umstandes bewusst sein, wenn man FOR ALL ENTRIES verwendet, denn es kann zu unerwünschten Nebeneffekten führen. Wenn man bei obigem Beispiel auch noch den Buchungsbetrag lesen möchte, dann kann es durchaus vorkommen, dass zwei mal der selbe Betrag in unterschiedlichen Buchungszeilen vorhanden ist. Bei einer Summierung hätte man dann eben nur noch die Hälfte des Wertes.
________________________________________________________
REPORT zzenno04 LINE-SIZE 1000.
TABLES bsis.
TYPES:
BEGIN OF ty_konto,
saknr TYPE saknr,
END OF ty_konto.
DATA:
BEGIN OF tab OCCURS 0,
hkont TYPE hkont,
belnr TYPE belnr_d,
buzei type buzei,
END OF tab,
git_konto TYPE STANDARD TABLE OF ty_konto.
PARAMETERS: p_kont TYPE hkont DEFAULT ‘0021789004’.
SELECT-OPTIONS: s_belnr FOR bsis-belnr.
START-OF-SELECTION.
SELECT saknr FROM skb1 INTO TABLE git_konto
WHERE bukrs = ‘0002’
AND saknr = p_kont.
SELECT hkont
belnr
buzei “ohne BUZEI selektieren…
FROM bsis INTO TABLE tab
FOR ALL ENTRIES IN git_konto
WHERE bukrs = ‘0002’
AND hkont = git_konto-saknr
AND belnr IN s_belnr.
LOOP AT tab.
WRITE: / tab-hkont, tab-belnr.
ENDLOOP.
- 7. December: Excel Racing Simulation – Root Vole Race - 7. Dezember 2024
- 5. December: ABAPConf - 5. Dezember 2024
- 4. December: Only a lazy developer is a good developer - 4. Dezember 2024